#!/bin/bash

# 获取当前日期，格式为 YYMMDD
DATE=$(date +%y%m%d)

# 编译项目
compile() {
    echo "开始编译项目..."
    mvn clean package spring-boot:repackage
    
    if [ $? -eq 0 ]; then
        echo "编译成功！"
        # 重命名 jar 包
        mv target/youlai-boot.jar target/youlai-boot-${DATE}.jar
        echo "JAR 包已重命名为: youlai-boot-${DATE}.jar"
        return 0
    else
        echo "编译失败！"
        return 1
    fi
}

# 部署到服务器
deploy() {
    echo "开始部署到服务器..."
    scp target/youlai-boot-${DATE}.jar root@8.211.44.179:/webroot/youlai-boot/jar/
    
    if [ $? -eq 0 ]; then
        echo "部署成功！"
        return 0
    else
        echo "部署失败！"
        return 1
    fi
}

# 在服务器上启动服务
start_service() {
    echo "启动服务..."
    java -jar youlai-boot.jar \
        --spring.profiles.active=prod \
        --spring.datasource.username=bytefly \
        --spring.datasource.password='&Xv9#Kt2@Zp4!Ln3$Jr8' \
        --spring.datasource.url='jdbc:mysql://127.0.0.1:3306/youlai_boot?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&allowMultiQueries=true'
}

# 在服务器上执行部署操作
server_deploy() {
    echo "在服务器上执行部署操作..."
    
    # 1. 查找最新的 jar 包
    latest_jar=$(ls -t youlai-boot-*.jar | head -n1)
    if [ -z "$latest_jar" ]; then
        echo "错误：未找到任何 jar 包"
        return 1
    fi
    
    # 显示找到的 jar 包并请求确认
    echo "找到最新的 jar 包: $latest_jar"
    read -p "是否继续部署？(y/n): " confirm
    if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then
        echo "已取消部署"
        return 0
    fi
    
    # 2. 删除旧的符号链接
    if [ -L "youlai-boot.jar" ]; then
        rm youlai-boot.jar
        echo "已删除旧的符号链接"
    fi
    
    # 3. 创建新的符号链接
    ln -s "$latest_jar" youlai-boot.jar
    echo "已创建新的符号链接: $latest_jar -> youlai-boot.jar"
    
    # 4. 停止当前服务
    echo "停止当前服务..."
    sudo systemctl stop youlai-boot
    
    if [ $? -eq 0 ]; then
        echo "服务已停止"
        # 5. 启动新服务
        start_service
    else
        echo "停止服务失败"
        return 1
    fi
}

# 重启服务
restart_service() {
    echo "开始重启服务..."
    
    # 1. 启动服务
    echo "启动服务..."
    sudo systemctl start youlai-boot
    
    if [ $? -eq 0 ]; then
        echo "服务启动成功"
        # 2. 显示服务状态
        echo "服务状态："
        sudo systemctl status youlai-boot.service
    else
        echo "服务启动失败"
        return 1
    fi
}

# 查看服务状态
check_status() {
    echo "查看服务状态..."
    sudo systemctl status youlai-boot.service
}

# 主函数
main() {
    case "$1" in
        -c)
            compile
            if [ $? -eq 0 ]; then
                deploy
            fi
            ;;
        -d)
            server_deploy
            ;;
        -r)
            restart_service
            ;;
        -s)
            check_status
            ;;
        *)
            echo "用法: $0 [-c|-d|-r|-s]"
            echo "  -c: 编译并部署项目"
            echo "  -d: 在服务器上执行部署操作"
            echo "  -r: 重启服务"
            echo "  -s: 查看服务状态"
            exit 1
            ;;
    esac
}

# 执行主函数
main "$@"
